<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width">
  <title>Title</title>
  <style>
    .note {
      background: #fff;
      border-radius: 16px;
      padding: 0 16px 16px 16px;
      margin-top: 30px;
      border-top: 2px solid #ccc;
      box-shadow: 0 0 16px -12px #333 inset;
    }
    .note h2 {
      background: #f0f0f0;
      padding: 8px 20px;
      font-weight: normal;
      border-radius: 25px;
    }
    .note h4 {
      margin: 0;
    }
    .note p {
      line-height: 24px;
      margin: 0;
      color: #555;
    }
    .note-item {
      margin-top: 12px;
    }
  </style>
</head>
<body>
<header></header>
<div id="app">
  <button @click="handleClick">小按钮</button>
  <div class="note">
    <h2>课程笔记</h2>
    <div class="note-item">
      <h4>1. 为什么要防重复点击？</h4>
      <p>因为一个按钮点击后通常会发起一个请求来处理业务，当请求没有结束的时候，再次点击，就会被重复调用，此时数据库验证都是无效的。这会增加接口开发的难度，比如要求幂等性、要求同步等，但是大部分的接口其实无需满足这些条件，只有类似核心数据的增加或金融操作才会有这种要求。</p>
    </div>
  </div>
</div>
<footer></footer>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
  (function () {
    new Vue({
      el: '#app',
      data: {
        content: '123',
        isWorking: false
      },
      methods: {
        handleClick () {
          if (this.isWorking) {
            return
          }
          this.isWorking = true
          setTimeout(() => {
            console.log('请求结束')
            this.isWorking = false
          }, 3000)
        }
      }
    })
  })()
</script>
</body>
</html>
